﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace proyectoENS
{
    public partial class frmAsignarAlumnosCursos : Form
    {
        private int cantidadAlumno = 0;
        private List<Alumnos> Curso = new List<Alumnos>();

        private static frmAsignarAlumnosCursos Instancia;
        public static frmAsignarAlumnosCursos onlyInstancia
        {
            get
            {
                if (Instancia == null || Instancia.IsDisposed)
                    Instancia = new frmAsignarAlumnosCursos();
                return Instancia;
            }
        }
        private frmAsignarAlumnosCursos()
        {
            InitializeComponent();
            dvgAlumnos.DataSource = DALAlumnos.getAlumnosSinCursoAsignado();
            dvgAlumnos.Refresh();
        }
        private void frmAsignarAlumnosCursos_Load(object sender, EventArgs e)
        {
            cbxAño.DataSource = DALCursos.getAños();
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            
            foreach (DataGridViewRow item in dvgAlumnos.SelectedRows)
            {
                if (!Curso.Contains((Alumnos)item.DataBoundItem))
                {
                    Curso.Add((Alumnos)item.DataBoundItem);   
                }
            }
            cantidadAlumno = Curso.Count;
            lblCantidad.Text = "Cantidad de Alumnos: " + cantidadAlumno.ToString();
            dgvCursos.DataSource = null;
            dgvCursos.DataSource = Curso;
            
            dgvCursos.Refresh();
            dvgAlumnos.Refresh();
        }
        private void cbxAño_SelectedIndexChanged(object sender, EventArgs e)
        {
            int tmp = int.Parse(cbxAño.SelectedValue.ToString());
            cbxDivision.DataSource = DALCursos.getDivisiones(tmp);
        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            int tmp = (int)((Cursos)cbxDivision.SelectedItem).idCurso;
            Curso = DALAlumnos.getAlumnosByIdCurso(tmp);
            dgvCursos.DataSource = Curso;
            cantidadAlumno = Curso.Count;
            lblCantidad.Text = "Cantidad de Alumnos: " + cantidadAlumno.ToString();
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {

            DALCursos.eliminarAlumno(((Alumnos)dgvCursos.CurrentRow.DataBoundItem).id, (int)((Cursos)cbxDivision.SelectedItem).idCurso);
            btnSeleccionar_Click(null, null);
            dvgAlumnos.DataSource = DALAlumnos.getAlumnosSinCursoAsignado();
            dvgAlumnos.Refresh();

        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            int tmp = (int)((Cursos)cbxDivision.SelectedItem).idCurso;
            if (DALCursos.agregarAlumnos(Curso, tmp) == true)
                MessageBox.Show("Operacion exitosa");
            else
                MessageBox.Show("Se ha producido un error, intente nuevamente");
            dvgAlumnos.DataSource = DALAlumnos.getAlumnosSinCursoAsignado();
            dvgAlumnos.Refresh();
        }

        private void dvgAlumnos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void txtValor_TextChanged(object sender, EventArgs e)
        {
            if (cbxBuscarPor.SelectedItem != null)
            {
                List<Alumnos> temp = new List<Alumnos>();
                if (cbxBuscarPor.SelectedItem.ToString() == "DNI")
                {
                    foreach (Alumnos d in DALAlumnos.getAlumnosSinCursoAsignado())
                    {
                        if (d.dni.StartsWith(txtValor.Text))
                            temp.Add(d);
                    }
                    dvgAlumnos.DataSource = temp;
                }
                if (cbxBuscarPor.SelectedItem.ToString() == "Apellido")
                {
                    foreach (Alumnos a in DALAlumnos.getAlumnosSinCursoAsignado())
                    {
                        if (a.Apellidos.StartsWith(txtValor.Text))
                            temp.Add(a);
                    }
                    dvgAlumnos.DataSource = temp;
                }
            }
            else
            {
                if (txtValor.Text != string.Empty)
                    MessageBox.Show("Debe seleccionar un modo de busqueda");
                txtValor.Text = "";
            }
        }

    }
}
